///////////////////////////////////////////////////
/// tototoy Code
/// author: Tonyhack
/// E-mail: tonyjobmails@gmail.com
/// filename: talk.h
/// function: 机器人对话设计
///////////////////////////////////////////////////
#ifndef _TALK_H
#define _TALK_H

#include "base.h"
#include "singleton.h"
#include <exp/hash_map>
#include <vector>

using namespace type;

///////////////////////////////////////////////////
/// @brief 机器人反应结构
struct response_info
{
	uint32 talk_id;					/// 反应语言id
	int8 emotion;						/// 情绪波动值
	uint32 rate;						/// 情绪受波动的概率
};
///////////////////////////////////////////////////

///////////////////////////////////////////////////
/// @brief 谈话结构
struct talk_info
{
	string talk;							/// 谈话内容
	int8 emotion;						/// 接收者的情绪波动值
	uint32 rate;						/// 情绪受波动的概率
};
///////////////////////////////////////////////////

///////////////////////////////////////////////////
/// @brief 
class talk_manager : public singleton<talk_manager>
{
	public:
		talking();
		~talking();
		
		typedef __gnu_cxx::hash_map<uint32, talk_info> __TALK_HASH;
		typedef __TALK_HASH::iterator talk_iter;
		typedef __gnu_cxx::hash_map<uint32, std::vector<response_info> > __RESPONSE_HASH;
		typedef __RESPONSE_HASH response_iter;
		
		__TALK_HASH talk_table;								/// talk列表
		__RESPONSE_HASH response_table;			/// 反应列表
		
		
};
///////////////////////////////////////////////////

#endif